<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Model\Category;

use App\Http\Requests;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;

class CategoryController extends CommonController
{	
	//get admin/category 全部分类列表
    public function index(){
//        $categorys = Category::tree();
        $categorys = (new Category)->tree();
        return view('admin.category.index')->with('data',$categorys);
    }
    
    //排序异步请求次排序操作
    public function changeOrder(){
        //接收更改的排序信息
        $input = Input::all();
        //查询更改的排序id
        $cate = Category::find($input['cate_id']);
        $cate->cate_order = $input['cate_order'];
        //更改排序号
        $re = $cate->update();
        if($re){
            //更改成功后的信息 返回值为json对象
            $data = [
                'status'=>0,
                'msg'=>'分类排序更新成功',
            ];
        }else{
            //更改失败后的信息 返回值为json对象
            $data = [
                'status'=>1,
                'msg'=>'分类排序更新失败,请稍后重试!',
            ];
        }
        return $data;
    }
    
    //get admin/category/create 添加分类
    public function create(){
        //查询父级分类名称 根据pai=0 查询 
        $data = Category::where('cate_pid',0)->get();
        //模板中显示父级分类
        return view('admin/category/add',compact('data'));
    }

    //post admin/category 提交添加分类
    public function store(){
        //接收添加页面接收的数据 except函数是除了某个字段之外
        $input = Input::except('_token');
        //自动验证
        $rules = [
                'cate_name'=>'required',//分类名称不能为空
            ];
            //中文提示信息
            $message = [
                'cate_name.required'=>'分类名称不能为空',
            ];
            //自动验证make方法中三个参数(验证什么信息,验证规则,中文提示信息)
            $v = Validator::make($input,$rules,$message);
            //passes()验证信息是否通过
            if($v->passes()){
                //使用create方法保存数据 需要在model中添加$guarded=[]字段 设置全部接收
                $re = Category::create($input);
                if($re){
                    //添加成功放回列表页显示
                    return redirect('admin/category');
                }else{
                    //失败返回错误信息
                    return back()->with('errors','文章添加失败,请稍后重试!');
                }
            }else{
                //修改密码验证信息不通过 返回上一步操作 输出错误信息
                return back()->withErrors($v);
            }
    }


    //get admin/category/{category} 编辑分类 
    public function edit($cate_id){
        //查询需要编辑的数据
        $field = Category::find($cate_id);
        //父级分类中的data
        $data = Category::where('cate_pid',0)->get();
        //模板遍历
        return view('admin/category/edit',compact('field','data'));
    }
    //put admin/category/{category} 更新分类
    public function update($cate_id){
        $input = Input::except('_token','_method');
        $re = Category::where('cate_id',$cate_id)->update($input);
        if($re){
            return redirect('admin/category');
        }else{
            return back()->with('errors','分类信息更新失败,请稍后重试!');
        }
    }

    //get admin/category/{category} 显示
    public function show(){

    }

    //delete admin/category/{category} 删除
    public function destroy($cate_id){
        //查询要删除的数据 根据id查询
        $re = Category::where('cate_id',$cate_id)->delete();
        //删除父级分类后二级分类pid=0成为父级分类
        Category::where('cate_pid',$cate_id)->update(['cate_pid'=>0]);
        //数据删除成功
        if($re){
            //数据删除成功 修改状态 输出信息
            $data = [
                'status' => 0,
                'msg' => '分类删除成功！',
            ];
        }else{
            //数据删除失败 修改状态 输出信息
            $data = [
                'status' => 1,
                'msg' => '分类删除失败，请稍后重试！',
            ];
        }
        return $data;
    }  
}
